package com.yanggu.scala.chapater18.myimplicit

/**
 * ①在Scala当中,要想使用隐式转换,必须标记为implicit关键字,implicit关键字可以用来修饰参数(隐式值与隐式参数)、函数(隐式视图)、类(隐式类)、对象(隐式对象).
 * ②隐式转换在整个作用域中,必须是单一的标识符,进而避免隐式冲突.
 * ③在隐式转换的作用域查找中，如果当前作用域没有隐式转换，编译器就会自动到相应源或目标类型的伴生对象中查找隐式转换。
 * ④Scala中的隐式值、隐式类、隐式对象常放在伴生对象object中.
 */

class S1 {
  def fun(str: String) = println(str)
}

class S2

object S2 {
  implicit def s2toS1(arg: S2) = new S1
}
object ImplicitDemo02 {

  def main(args: Array[String]): Unit = {
//    implicit def s2toS1(arg: S2) = new S1
    val s2 = new S2
    s2.fun("Spark")
  }

}

